package com.xx.lm.webviewloadlocalimg;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.MotionEvent;
import android.view.View;
import android.webkit.WebView;
import android.widget.LinearLayout;
import android.widget.Toast;

public class WebViewScroll extends AppCompatActivity {

    private WebView webview;
    private LinearLayout linearLayout;
    private int m;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_web_view_scroll);

        webview = findViewById(R.id.webview);
        linearLayout = findViewById(R.id.linear);

        String html = "<!DOCTYPE html>\n" +
                "<html>\n" +
                "\t<head>\n" +
                "\t\t<meta charset=\"UTF-8\">\n" +
                "\t\t<title></title>\n" +
                "\t</head>\n" +
                "\t<body>\n" +
                "\t\t\n" +
                "\t\t<h1>\n" +
                "\t\t\t响应拖拽开始\n" +
                "在拖拽操作期间，系统会将拖拽事件分发到当前布局中的视图对象的拖拽事件侦听器。 侦听器应通过调用 getAction() 做出反应，以获取操作类型。 拖拽开始时，此方法将返回 ACTION_DRAG_STARTED。\n" +
                "\n" +
                "在响应具有操作类型 ACTION_DRAG_STARTED 的事件时，侦听器应执行以下操作：\n" +
                "\n" +
                "调用 getClipDescription() 以获取 ClipDescription。使用 ClipDescription 中 MIME 类型的方法查看侦听器能否接受正在拖拽的数据。\n" +
                "如果拖放操作不表示数据移动，这可能不是必要的。\n" +
                "\n" +
                "如果侦听器可接受放下操作，则应返回 true。这将告知系统继续向侦听器发送拖拽事件。 如果它不能接受放下操作，则应返回 false，系统将停止发送拖拽事件，直至其发出 ACTION_DRAG_ENDED。\n" +
                "请注意，对于 ACTION_DRAG_STARTED 事件，以下这些 DragEvent 方法全部无效： getClipData()、getX()、getY() 和 getResult()。\n" +
                "\n" +
                "在拖拽过程中处理事件\n" +
                "在拖拽期间，返回 true 以响应 ACTION_DRAG_STARTED 拖拽事件的侦听器会继续接收拖拽事件。 侦听器在拖拽期间接收的拖拽事件类型取决于拖拽阴影的位置和侦听器视图的可见性。\n" +
                "\n" +
                "在拖拽期间，侦听器主要使用拖拽事件来确定其是否应更改其视图的外观。\n" +
                "\n" +
                "在拖拽期间，getAction() 将返回以下三个值中的一个：\n" +
                "\n" +
                "ACTION_DRAG_ENTERED： 侦听器在触摸点（用户手指下面的屏幕点）进入侦听器视图的边界框时收到此事件。\n" +
                "ACTION_DRAG_LOCATION：在侦听器收到 ACTION_DRAG_ENTERED 事件之后以及收到 ACTION_DRAG_EXITED 事件之前，它会在触摸点每次移动时收到新的 ACTION_DRAG_LOCATION 事件。 getX() 和 getY() 方法会返回触摸点的 X 和 Y 坐标。\n" +
                "ACTION_DRAG_EXITED：此事件在拖拽阴影不再在侦听器视图的边界框内之后，被发送到之前收到 ACTION_DRAG_ENTERED 的侦听器。\n" +
                "该侦听器不需要对以上任何操作类型做出反应。如果侦听器向系统返回值，该值将被忽略。 以下是响应上述各个操作类型时的一些准则：\n" +
                "\n" +
                "在响应 ACTION_DRAG_ENTERED 或 ACTION_DRAG_LOCATION 时，侦听器可以更改视图的外观，以指示它将要接收放下操作。\n" +
                "具有操作类型 ACTION_DRAG_LOCATION 的事件包含对应于触摸点位置的 getX() 和 getY() 的有效数据。 侦听器可能希望使用此信息来更改位于触摸点的视图部分外观。 侦听器也可以使用此信息来确定用户计划将拖拽阴影拖到的确切位置。\n" +
                "在响应 ACTION_DRAG_EXITED 时，侦听器应重置其在响应 ACTION_DRAG_ENTERED 或 ACTION_DRAG_LOCATION 时所应用的任何外观更改。 这向用户指明，该视图不再是迫在眉睫的放下目标。\n" +
                "响应放下\n" +
                "当用户将拖拽阴影释放到应用中的某个视图上并且该视图之前已报告它能接受所拖拽的内容时，系统会向该视图分发具有操作类型 ACTION_DROP 的拖拽事件。 侦听器应执行以下操作：\n" +
                "\n" +
                "调用 getClipData() 以获取最初在 startDrag() 调用中提供的 ClipData 对象并存储该对象。 如果拖放操作不表示数据移动，这可能不是必要的。\n" +
                "返回布尔值 true 指示已成功处理放下操作，或者，如果处理失败，则返回布尔值 false。 返回的值将成为 getResult() 针对 ACTION_DRAG_ENDED 事件返回的值。\n" +
                "请注意，如果系统没有发出 ACTION_DROP 事件，则 ACTION_DRAG_ENDED 事件的 getResult() 值为 false。\n" +
                "\n" +
                "对于 ACTION_DROP 事件，getX() 和 getY() 将使用收到放下操作的视图的坐标系，返回拖拽点在放下时刻的 X 和 Y 位置。\n" +
                "\n" +
                "系统允许用户将拖拽阴影释放到侦听器未接收拖拽事件的视图上。 它也允许用户在空的应用 UI 区域或在应用以外的区域释放拖拽阴影。 上述所有情况下，系统都不会发送具有操作类型 ACTION_DROP 的事件，不过它会发出 ACTION_DRAG_ENDED 事件。\n" +
                "\n" +
                "响应拖拽结束\n" +
                "系统会在用户释放拖放阴影后，立即向应用中的所有拖拽事件侦听器发送具有操作类型 ACTION_DRAG_ENDED 的拖拽事件。 此事件指示拖拽操作结束。\n" +
                "\n" +
                "每个侦听器应执行以下操作：\n" +
                "\n" +
                "如果侦听器在操作期间更改了其视图对象的外观，则应该将视图重置为其默认外观。 这是通知用户操作结束的视觉指示。\n" +
                "侦听器可以选择调用 getResult() 以了解关于该操作的更多信息。 如果侦听器在响应 ACTION_DROP 操作类型的事件时返回了 true，则 getResult() 将返回布尔值 true。 在其他所有情况下，getResult() 均返回布尔值 false，包括系统未发出 ACTION_DROP 事件的任何情况。\n" +
                "侦听器应该向系统返回布尔值 true。\n" +
                "响应拖拽事件：示例\n" +
                "所有拖拽事件最初都由拖拽事件方法或侦听器接收。以下代码片段是在侦听器中对拖拽事件做出反应的简单示例：\n" +
                "asdfasdf\n" +
                "asdf\n" +
                "asd\n" +
                "fas\n" +
                "df\n" +
                "\n" +
                "\n" +
                "asdfasdfasdfasdfasdf\n" +
                "asd\n" +
                "f\n" +
                "asdf\n" +
                "a\n" +
                "sd\n" +
                "fa\n" +
                "sdf\n" +
                "a\n" +
                "sdf\n" +
                "adsf\n" +
                "ads\n" +
                "f\n" +
                "adsf\n" +
                "as\n" +
                "df\n" +
                "asd\n" +
                "f\n" +
                "asd\n" +
                "fa\n" +
                "sf\n" +
                "ads\n" +
                "f\n" +
                "a\n" +
                "fa\n" +
                "sf\n" +
                "a\n" +
                "f\n" +
                "a\n" +
                "d\n" +
                "f\n" +
                "asd\n" +
                "f\n" +
                "adf\n" +
                "a\n" +
                "df\n" +
                "a\n" +
                "sdf\n" +
                "asd\n" +
                "f\n" +
                "af\n" +
                "\t\t\t\n" +
                "\t\t</h1>\n" +
                "\t\t\n" +
                "\t</body>\n" +
                "</html>\n";

        webview.loadData(html,"text/html","utf-8");
        linearLayout.setClickable(true);
        m = 0;
        linearLayout.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View view, MotionEvent motionEvent) {
                if (motionEvent.getAction() == MotionEvent.ACTION_DOWN) {


                    boolean isLeft = true;
                    if (motionEvent.getX() < 200) {//左边


                    } else {//右边

                        isLeft = false;
                    }

                    if (webview.canScrollVertically(-1)) {
                        Toast.makeText(WebViewScroll.this, "adsfasdf", Toast.LENGTH_SHORT).show();
//                    webview.scrollTo(0,0);
                        m += linearLayout.getHeight();
                        webview.scrollTo(0, m);

                    } else {

                        Toast.makeText(WebViewScroll.this, "123423", Toast.LENGTH_SHORT).show();
                        m += linearLayout.getHeight();
                        webview.scrollTo(0, m);
                    }
                }
                return true;
            }

        });


    }




}
